Writing portable scripts
To write scripts that don't require to specify the full path to csi, the following technique might be useful:
#!/bin/sh #| exec csi -s "$0" "$@" |#
Another approach would be to have a trampoline script that invokes csi with these contents:
% cat runscheme #!/bin/sh exec csi -s $*
and use this header in your scheme script:
#!/usr/bin/env runscheme ...
It should be noted that the following would not be portable
#!/usr/bin/env csi -s
Because POSIX only requires the shebang command to accept one parameter (csi in this case) and -s might be ignored.